
package com.be.beadmin.project.service;

import com.be.beadmin.common.entity.PageEntity;
import com.be.beadmin.project.dto.input.TeamDto;
import com.be.beadmin.project.dto.output.ProjectInfoSimpEx;
import com.be.beadmin.project.dto.output.ProjectTeamEx;
import com.be.beadmin.project.dto.output.TeamEx;
import com.be.beadmin.project.entity.Info;
import com.be.beadmin.project.entity.Team;
import com.be.beadmin.project.entity.TeamEntity;
import org.springframework.data.domain.Page;

import java.util.List;

/**
* @description 服务接口
* @author zjm
* @date 2023-02-02
**/
public interface TeamService {

    /**
    * 分页的查询接口
    * @param pageEntity
    * @return
    */
    Page<TeamEx> getTeamByPage(PageEntity pageEntity);

//    /**
//     *
//     * @return
//     */
//    Object getTeamRefInfo(PageEntity projectPageEntity,PageEntity userPageEntity);
    /**
     *
     * @param team
     */
    void addTeam(TeamEntity team);

    /**
     *
     * @param teamDto
     * @return
     */
    int addTeam(TeamDto teamDto);

    /**
     * @param teamDto
     * @return
     */
    int updateTeam(TeamDto teamDto);

    /**
    * @param id
    */
    void delTeam(String id);

    /**
    * 删除多个角色
    * @param ids
    */
    void delTeams (List<String> ids);

    /**
     * 获取所有角色类型
     * @return
     */
    List<String> getRoleType();

    /**
     * 获取所有的项目的简易信息
     * @return
     */
    List<ProjectInfoSimpEx> getProjectInfoSimp();

    /**
     * 获取指定id的团队信息
     * @param teamId
     * @return
     */
    Team getTeamByIdAndDelete(String teamId);

    Page<Object> getTeamAndProjectByPage(PageEntity pageEntity);

    /**
     * 根据项目ID获取该项目团队信息
     * @param infoId
     * @return
     */
    ProjectTeamEx getProjectTeamInfos(String infoId);

    /**
     * 根据项目ID和团队ID更换项目团队
     * @param infoId
     * @param teamId
     * @return
     */
    String changeProjectTeam(String infoId, String teamId);

    List<ProjectTeamEx> getTeamInfos();

    /**
     * 给项目设置默认团队
     * @param info
     */
    void setInfoDefaultTeam(Info info);


    /**
     * 更新团队的状态：是否有效
     * @param teamId
     */
    void updateTeamState(String teamId);
}